﻿using System;
using System.Collections.Generic;

namespace DataStore.Domain
{
    /// <summary>
    /// Data about a person
    /// </summary>
    [Serializable]
    public class Person
    {
        /// <summary>
        /// Gets or sets the id.
        /// </summary>
        /// <value>The id.</value>
        public virtual Guid Id { get; set; }
        /// <summary>
        /// Gets or sets the first name.
        /// </summary>
        /// <value>The first name.</value>
        public virtual string FirstName { get; set; }
        /// <summary>
        /// Gets or sets the name of the middle.
        /// </summary>
        /// <value>The name of the middle.</value>
        public virtual string MiddleName { get; set; }
        /// <summary>
        /// Gets or sets the last name.
        /// </summary>
        /// <value>The last name.</value>
        public virtual string LastName { get; set; }
        /// <summary>
        /// Gets or sets the institution.
        /// </summary>
        /// <value>The institution.</value>
        public virtual ICollection<Company> Institutions { get; set; }
        /// <summary>
        /// Gets or sets the emails.
        /// </summary>
        /// <value>The emails.</value>
        public virtual ICollection<EmailLink> Emails { get; set; }
        /// <summary>
        /// Gets or sets the websites.
        /// </summary>
        /// <value>The websites.</value>
        public virtual ICollection<WebPageLink> Websites { get; set; }
        /// <summary>
        /// Gets or sets the images made about the person.
        /// </summary>
        /// <value>The images.</value>
        public virtual ICollection<ImageLink> Images { get; set; }
        /// <summary>
        /// Gets or sets the phone numbers.
        /// </summary>
        /// <value>The phone numbers.</value>
        public virtual ICollection<string> PhoneNumbers { get; set; }
        /// <summary>
        /// Gets or sets the addresses.
        /// </summary>
        /// <value>The addresses.</value>
        public virtual ICollection<Address> Addresses { get; set; }
        /// <summary>
        /// Gets or sets the comment.
        /// </summary>
        /// <value>The comment.</value>
        public virtual string Comment { get; set; }
        /// <summary>
        /// Gets or sets the employment position, job.
        /// </summary>
        /// <value>The position.</value>
        public virtual string Position { get; set; }
        /// <summary>
        /// Gets or sets the title, e.g. Dr.
        /// </summary>
        /// <value>The title.</value>
        public virtual string Title { get; set; }
    }
}
